package com.zy.search.service.impl;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.zy.pojo.TbItem;
import com.zy.search.dao.SearchDao;
import com.zy.search.pojo.Item;
import com.zy.search.pojo.SearchResult;
import com.zy.search.service.SearchService;

//搜索Service
@Component
public class SearchServiceImpl implements SearchService {

	@Autowired
	private SearchDao searchDao;

	/**
	 * 根据条件查询，并且分页
	 */
	@Override
	public SearchResult search(String queryString, int page, int rows) throws Exception {
		// 创建查询条件对象
		SolrQuery query = new SolrQuery();
		// 设置查询条件
		query.setQuery(queryString);
		// 设置默认搜索域
		query.set("df", "item_keywords");
//		query.set("df", "id");
//		query.set("df", "text");
		// 设置分页
		query.setStart((page - 1) * rows);// limit中的第一个参数
		// 显示行数    
		query.setRows(rows);
		
//	            设置高亮显示,可有可无
//		query.setHighlight(true);
//		query.addHighlightField("item_title");
//		query.setHighlightSimplePre("<em style=\"color:red\">");
//		query.setHighlightSimplePost("</em>");
		
		// 执行查询
		SearchResult searchResult = searchDao.search(query);
		// 查询结果总页数
		long recordCount = searchResult.getRecordCount();
		// 总页数=总条数/每页数据数
		long pageCount = recordCount % rows == 0 ? recordCount / rows : recordCount / rows + 1;
		searchResult.setPageCount(pageCount);
		// 当前页
		searchResult.setCurPage(page);
		return searchResult;
	}

	@Override
	public Item queryItemById(String id) throws Exception {
		SolrQuery query = new SolrQuery();
		// 设置查询条件
		query.setQuery(id);
		// 设置默认搜索域
		query.set("df", "id");
		// 执行查询
		SearchResult searchResult = searchDao.search(query);
		List<Item> itemList = searchResult.getItemList();
		return itemList.get(0);
	}

}